/**
 * 如果两个点属于不同的连通分量，join时不会形成环。如果属于相同的连通分量，则可能会出现环。本题的题意为肯定出现环。
 * 使用并查集判断两个点是否在相同的子集中，是否属于相同的连通分量
 * @param {number[][]} edges
 * @return {number[]}
 */
var findRedundantConnection = function (edges) {
    let len = edges.length,
        father = new Array(len + 1).fill(0).map((val, index) => index);

    function join(a, b) {
        a = find(a);
        b = find(b);
        if (a === b) return
        father[b] = a
    }

    function find(a) {
        return a === father[a] ? a : father[a] = find(father[a])
    }

    function isSame(a, b) {
        a = find(a);
        b = find(b);
        return a === b
    }

    for (let [x, y] of edges) {
        if (isSame(x, y)) {
            return [x, y]
        } else {
            join(x, y)
        }
    }
};